package com.example.Sao.Custom;

import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;

/**
 * @ProjectName: scan
 * @Package: com.example.MyApplication.Custom
 * @ClassName: HorizontalCanScrollViewPager
 * @Description: java类作用描述
 * @Author: 作者名
 * @CreateDate: 2020/3/19 20:52
 * @UpdateUser: 更新者：
 * @UpdateDate: 2020/3/19 20:52
 * @UpdateRemark: 更新说明：
 * @Version: 1.0
 */
public class MyViewPager extends ViewPager {

  private static final String TAG = "xujun";

  int lastX = -1;
  int lastY = -1;

  public MyViewPager(Context context) {
    super(context);
  }

  public MyViewPager(Context context, AttributeSet attrs) {
    super(context, attrs);
  }

  @Override
  public boolean dispatchTouchEvent(MotionEvent ev) {
    int x = (int) ev.getRawX();
    int y = (int) ev.getRawY();
    int dealtX = 0;
    int dealtY = 0;

    switch (ev.getAction()) {
      case MotionEvent.ACTION_DOWN:
        dealtX = 0;
        dealtY = 0;
        // 保证子View能够接收到Action_move事件
        getParent().requestDisallowInterceptTouchEvent(true);
        break;
      case MotionEvent.ACTION_MOVE:
        dealtX += Math.abs(x - lastX);
        dealtY += Math.abs(y - lastY);
        Log.i(TAG, "dealtX:=" + dealtX);
        Log.i(TAG, "dealtY:=" + dealtY);
        // 这里是够拦截的判断依据是左右滑动，读者可根据自己的逻辑进行是否拦截
        if (dealtX >= dealtY) {
          getParent().requestDisallowInterceptTouchEvent(true);
        } else {
          getParent().requestDisallowInterceptTouchEvent(false);
        }
        lastX = x;
        lastY = y;
        break;
      case MotionEvent.ACTION_CANCEL:
        break;
      case MotionEvent.ACTION_UP:
        break;

    }
    return super.dispatchTouchEvent(ev);
  }
}